Field of the Invention
The present invention is directed generally to file formats and data structures used to implement application virtualization.
Description of the Related Art
A virtual application is a virtual machine image pre-configured with all of the files, registry data, settings, components, runtimes, and other dependencies required for a specific application to execute immediately and without installation on a host computing device. The virtual application is partially isolated from other applications implemented on a host computing device and partially isolated from an underlying host operating system installed and executing on the host computing device. The virtual application is encapsulated from the host operating system by a virtual runtime environment, which includes a virtual operating system, that receives operations performed by the virtualized application and redirects them to one or more virtualized locations (e.g., a virtual filesystem, virtual registry, and the like).
Thus, the virtual application may be conceptualized as including two components: a virtualization runtime and a virtual application configuration. The virtualization runtime implements the virtual runtime environment, which implements various operating system application programming interfaces (“APIs”) in such a way that allows the executing virtual application to access and interact with items that may not be present on the host computer. The virtual application configuration includes data necessary to implement the virtual application within the virtualization runtime.
The virtual application is stored in and implemented by one or more data files and/or executable files. Depending upon the implementation details, the one or more data files and/or executable files storing and implementing the virtual application may include blocks of data corresponding to each application file of a natively installed version of the application. Herein, these blocks of data will be referred to as “virtual application files.” The one or more data files and/or executable files storing and implementing the virtual application also include configuration information.
The data files and/or executable files are configured to execute within a virtual runtime environment that is provided at least in part by the virtual operating system. When the virtual application is executed within the virtual runtime engine, the configuration information is used to configure the virtual operating system to execute the virtual application. For example, the configuration information may contain information related to the virtual application files, virtual registry entries, environment variables, services, and the like. The virtual operating system is configured to communicate with the host operating system as required to execute the virtual application on the host computing device.
As is apparent to those of ordinary skill in the art, to execute the virtual application, the virtual runtime engine reads the configuration information and the virtual application files stored in the data file(s) and/or executable file(s). Thus, an amount of time required to execute the virtual application is determined at least in part by how efficiently the reader can access data stored in the data file(s) and/or executable file(s). File formats that enable efficient data access by the reader of the virtual runtime engine are desirable. To reduce an amount of time required to startup a virtual application, a need exists for a file format configured to identify portions that may be skipped initially and read at a later time. Further, compatibility of a particular virtual application with a particular version of the virtual runtime engine is determined at least in part by the format of the data file(s) and/or executable file(s). Therefore, a need exists for file formats configured to provide forward and/or backward compatibility. The present application provides these and other advantages as will be apparent from the following detailed description and accompanying figures.